              <div align="right">
${TARGET="offline"}                <a href="${LDAP_SDK_HOME_URL}" style="font-size: 85%">LDAP SDK Home Page</a>
                <br>
                <a href="${BASE}index.${EXTENSION}" style="font-size: 85%">Product Information</a>
                <br>
                <a href="index.${EXTENSION}" style="font-size: 85%">Getting Started with the LDAP SDK</a>
              </div>

              <h2>Debugging SDK Operations</h2>

              <p>
                The UnboundID LDAP SDK for Java includes basic debugging support which is based on
                the Java logging framework in the <tt>java.util.logging</tt> package.
              </p>

              <p>
                Debugging is performed in the following general categories (represented by the
                <tt>DebugType</tt> enumeration:
              </p>

              <ul>
                <li><tt>ASN1</tt> -- Reading and writing ASN.1 elements.</li>
                <li><tt>CODING_ERROR</tt> -- Issues with usage of the LDAP SDK (e.g., providing a null argument where a non-null argument is required).</li>
                <li><tt>CONNECT</tt> -- Establishing and terminating network connections.</li>
                <li><tt>CONNECTION_POOL</tt> -- Operations involving connection pool usage and maintenance.</li>
                <li><tt>EXCEPTION</tt> -- Exceptions that are caught during processing.</li>
                <li><tt>LDAP</tt> -- Reading and writing LDAP messages.</li>
                <li><tt>LDIF</tt> -- Reading and writing LDIF entries and change records.</li>
                <li><tt>MONITOR</tt> -- Parsing server monitor entries.</LI>
                <li><tt>OTHER</tt> -- Debug messages that don't fit into any other category.</li>
              </ul>

              <p>
                The primary interface for accessing debug information is the
                <tt>com.unboundid.util.Debug</tt> class.  Many of the methods in this class are
                intended for use by the SDK to generate debugging information, but the following
                methods are of use to developers wishing to access debug information:
              </p>

              <ul>
                <li>
                  <tt>debugEnabled()</tt> -- Indicates whether any form of debugging is enabled.
                  <br><br>
                </li>

                <li>
                  <tt>debugEnabled(DebugType debugType)</tt> -- Indicates whether debugging is
                  enabled for messages of the specified type.
                  <br><br>
                </li>

                <li>
                  <tt>getDebugTypes()</tt> -- Retrieves the set of debug types that are currently
                  enabled.
                  <br><br>
                </li>

                <li>
                  <tt>getLogger()</tt> -- Retrieves the Java <tt>Logger</tt> object that will be
                  used to write debug messages.
                  <br><br>
                </li>

                <li>
                  <tt>initialize()</tt> -- Resets the debugging system to use the default settings.
                  <br><br>
                </li>

                <li>
                  <tt>initialize(Properties properties)</tt> Resets the debugging system to use
                  default settings that may be overridden with the provided set of properties.
                  <br><br>
                </li>

                <li>
                  <tt>setEnabled(boolean enabled)</tt> -- Specifies whether the debugging system
                  should be enabled.  If it is to be enabled, then it will be enabled for all debug
                  types.
                  <br><br>
                </li>

                <li>
                  <tt>setEnabled(boolean enabled, Set&lt;DebugType&gt;)</tt> -- Specifies whether
                  the debugging system should be enabled.  If it is to be enabled, then it will be
                  enabled for the specified set of debug types.
                  <br><br>
                </li>
              </ul>

              <p></p>
              <h3>Enabling Debugging via System Properties</h3>

              <p>
                It is also possible to enable SDK debugging by setting system properties that will
                take effect when the JVM is started.  The following properties may be set:
              </p>

              <ul>
                <li>
                  <tt>com.unboundid.ldap.sdk.debug.enabled</tt> -- Used to specify whether
                  debugging should be initially enabled.  If it is provided, then the value for
                  this property should be "true" if debugging should be enabled by default, or
                  "false" if it should be disabled by default.
                  <br><br>
                </li>

                <li>
                  <tt>com.unboundid.ldap.sdk.debug.level</tt> -- Used to specify the initial level
                  for the debug logger.  If it is provided, then the value should be one of the
                  following strings:  "ALL", "SEVERE", "WARNING", "INFO", "CONFIG", "FINE",
                  "FINER", "FINEST", or "OFF".
                  <br><br>
                </li>

                <li>
                  <tt>com.unboundid.ldap.sdk.debug.type</tt> -- Used to specify the set of debug
                  types for which debugging should be enabled.  If it is set, then the value should
                  be a comma-delimited list of the desired debug types (which are the names of the
                  <tt>DebugType</tt> values).
                  <br><br>
                </li>
              </ul>
